<?php

abstract class Modules_Abstract {

	/**
	 * @var string Текущее действие
	 */
	public $action;

	/**
	 * @return string Рабочее имя модуля - английские буквы в нижнем регистре.
	 */
	abstract public function name ();

	/**
	 * @return string Название модуля по русски
	 */
	abstract public function title ();

	/**
	 * Возвращает объект требуемого модуля
	 * @param string $module_name Рабочее имя модуля
	 * @return Modules_Abstract
	 */
	public static function module ($module_name) {
		$module = "Module_" . ucwords($module_name);
		$module = new $module();
		return $module;
	}

	public function __construct ($action = "") {
		$this->action = $action;
	}

}